package com.wy.office.swift.word.model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;

import com.wy.office.swift.util.CollectionUtils;

import lombok.Getter;

/**
 * word相关参数类
 * 
 * @author wangyuan
 * @since 2019年3月19日
 */
public class WordParamModel implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 4741324068127908434L;
    
    /**
     * 简单数据，键值对
     */
    @Getter
    private Map<String, String> simpleParams = new HashMap<>();
    
    /**
     * For循环相关数据
     */
    @Getter
    private List<WordForModel> forParams = new ArrayList<>();
    
    /**
     * 添加替换的变量键值对
     * @param key
     * @param value
     */
    public void addParam(String key, String value){
        simpleParams.put(key, value);
    }
    
    /**
     * 添加所有的替换的变量键值对
     * @param simpleParams
     */
    public void addAllParam(Map<String, String> simpleParams){
        this.simpleParams.putAll(simpleParams);
    }
    
    /**
     * 添加for循环数据
     * @param wordForModel
     */
    public void addParam(WordForModel wordForModel){
        forParams.add(wordForModel);
    }
    
    /**
     * For循环相关数据是否为空
     * @return
     */
    public boolean isEmptyOfForParams(){
        return CollectionUtils.isEmpty(forParams);
    }
    
    /**
     * 解析for循环体中的键值对，并设置到{@link #simpleParams}中
     */
    public void parseForParams() {
        forParams.forEach(new Consumer<WordForModel>() {

            @Override
            public void accept(WordForModel t) {
                simpleParams.putAll(t.getDataReplaceParam());
            }
        });
    }

}
